class Solution:
    def canReach(self, arr: List[int], start: int) -> bool:
        visited=[0]*len(arr)
        def traverse(index):
            visited[index]=1
            if arr[index]==0:
                return True
            temp=False
            if index-arr[index]>=0 and visited[index-arr[index]]==0:
                temp=temp or traverse(index-arr[index])
            if index+arr[index]<len(arr) and visited[index+arr[index]]==0:
                temp=temp or traverse(index+arr[index])
            return temp
        return traverse(start)

# 执行用时：
# 68 ms
# , 在所有 Python3 提交中击败了
# 76.50%
# 的用户
# 内存消耗：
# 76.3 MB
# , 在所有 Python3 提交中击败了
# 20.05%
# 的用户